home *** CD-ROM | disk | FTP | other *** search
- #include <exec/types.h>
- #include <exec/exec.h>
- #include <exec/memory.h>
- #include <exec/ports.h>
- #include <libraries/dos.h>
- #include <devices/timer.h>
- #include <intuition/intuitionbase.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include "work:romconf/doorheader.h"
- #include <functions.h>
- #define FOREVER for(;;)
- #define SM sendmessage
- #define HK hotkey
- #define PM prompt
- #define DROP Drop()
- extern void hotkey();
- extern void prompt();
- extern void showfile();
- extern void end();
- extern void getuserstring();
- extern void getuserdata();
- extern void showgfile();
- extern void sendmessage();
- extern void sendMessage();
- extern void Drop();
- extern void putuserstring();
- extern int LocalLog;
- VOID Register(int node);
- VOID ShutDown(VOID);
- VOID CloseOut();
- void getcmduserstring(char *ostring,int nl);
- struct MsgPort *CreatePrt(UBYTE *name,LONG pri);
- void getmaxuserstring(char *ostring,int nl);
- BOOL PutToPort(struct Message *);
- int Editfile(char Name[],int len);
- void ConOnly(char mstring[],int nl);
- struct MsgPort *port;
- struct MsgPort *replymp;
- struct JHMessage *Jhmsg,*msg;
- #define ANYKEY "press <RETURN> to continue"
-
-
- VOID Register(int node)
- {
- ULONG portsig,signal;
- LONG l;
- BOOL foundport, ABORT= FALSE;
- char PortName[80];
- Jhmsg=(struct JHMessage *)AllocMem(sizeof(struct JHMessage),MEMF_PUBLIC);
-
- if(Jhmsg==0)
- {
- printf("Not enough Memory for message structure\n");
- exit(30);
- }
- switch(node)
- {
- case 0: replymp=CreatePrt("DoorReplyPort0",0L);strcpy(PortName,"DoorReplyPort0"); break;
- case 1: replymp=CreatePrt("DoorReplyPort1",0L);strcpy(PortName,"DoorReplyPort1"); break;
- case 2: replymp=CreatePrt("DoorReplyPort2",0L);strcpy(PortName,"DoorReplyPort2"); break;
- case 3: replymp=CreatePrt("DoorReplyPort3",0L);strcpy(PortName,"DoorReplyPort3"); break;
- case 4: replymp=CreatePrt("DoorReplyPort4",0L);strcpy(PortName,"DoorReplyPort4"); break;
- case 5: replymp=CreatePrt("DoorReplyPort5",0L);strcpy(PortName,"DoorReplyPort5"); break;
- case 6: replymp=CreatePrt("DoorReplyPort6",0L);strcpy(PortName,"DoorReplyPort6"); break;
- case 7: replymp=CreatePrt("DoorReplyPort7",0L);strcpy(PortName,"DoorReplyPort7"); break;
- case 8: replymp=CreatePrt("DoorReplyPort8",0L);strcpy(PortName,"DoorReplyPort8"); break;
- case 9: replymp=CreatePrt("DoorReplyPort9",0L);strcpy(PortName,"DoorReplyPort9"); break;
- }
- if(replymp==0)
- {
- printf("Couldn't create reply port\n");
- FreeMem(Jhmsg,sizeof(struct JHMessage));
- exit(30);
- }
- Jhmsg->Msg.mn_Node.ln_Type=NT_MESSAGE;
- Jhmsg->Msg.mn_Length=sizeof(struct JHMessage);
- Jhmsg->Msg.mn_ReplyPort=replymp;
- strcpy(Jhmsg->String,PortName);
- Jhmsg->Command=JH_REGISTER;
- Jhmsg->Data=2;
- Jhmsg->NodeID=-1;
- Jhmsg->LineNum=0;
- sprintf(PortName,"AEDoorPort%d",node);
- while(!(port=FindPort(PortName)));
- PutToPort((struct Message *)Jhmsg);
-
- portsig=1<<replymp->mp_SigBit;
-
- Wait(portsig);
- msg=(struct JHMessage *)GetMsg((struct MsgPort *)replymp);
-
- }
-
- VOID ShutDown(VOID)
- {
- ULONG portsig,usersig,signal;
- BOOL foundport, ABORT= FALSE;
-
- portsig=1<<replymp->mp_SigBit;
- Jhmsg->Command=JH_SHUTDOWN;
- PutToPort((struct Message *)Jhmsg);
- signal=Wait(portsig);
- while(msg=(struct JHMessage *)GetMsg((struct MsgPort *)replymp));
- DeletePort((struct MsgPort *)replymp);
- FreeMem(Jhmsg,sizeof(struct JHMessage));
- }
-
- int Editfile(char Name[],int len)
- {
- strcpy(msg->String,Name);
- msg->Command=JH_EF;
- msg->Data=len;
- PutToPort((struct Message *)Jhmsg);
- WaitPort(replymp);
- GetMsg(replymp);
- len=msg->Data;
- if(msg->Data==-1) CloseOut();
- return(len);
- }
-
- BOOL PutToPort(struct Message *message)
- {
- PutMsg(port,message);
- return((BOOL)1);
- }
- /*void end()
- {
- exit(0);
- }
- */
- void sendmessage(mstring,nl)
- char mstring[];
- int nl;
- {
- register int counter;
- char Temp[80];
-
- if(strlen(mstring)<80) sendMessage(mstring,0);
- else
- {
- counter=0;
- do
- {
- sprintf(Temp,"%.79s",&mstring[counter]);
- sendMessage(Temp,0);
- counter +=79;
- }while(strlen(Temp)==79);
- }
- if(nl==1){ sendMessage("",1); Jhmsg->LineNum +=1; }
- if(Jhmsg->LineNum==22)
- { hotkey(ANYKEY,Temp); DROP;
- SM("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b",0);
- SM(" ",0);
- SM("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b",0);
- }
- }
- void ConOnly(char mstring[],int nl)
- {
- Jhmsg->Data = nl;
- Jhmsg->Command = JH_CO;
- strcpy(Jhmsg->String,mstring);
- PutToPort((struct Message *)Jhmsg);
- (void)WaitPort(replymp);
- (void)GetMsg(replymp);
- }
- void sendMessage(mstring,nl)
- char mstring[];
- int nl;
- {
- Jhmsg->Data = nl;
- Jhmsg->Command = JH_SM;
- strcpy(Jhmsg->String,mstring);
- PutToPort((struct Message *)Jhmsg);
- (void)WaitPort(replymp);
- (void)GetMsg(replymp);
- }
- void hotkey(mstring,ostring)
- char mstring[];
- char *ostring;
- {
- Jhmsg->LineNum=0;
- strcpy(Jhmsg->String,mstring);
- Jhmsg->Command = JH_HK;
- PutToPort((struct Message *)Jhmsg);
- (void)WaitPort(replymp);
- (void)GetMsg(replymp);
- strcpy(ostring,Jhmsg->String);
- if(Jhmsg->Data==-1) CloseOut();
- }
-
- void prompt(mstring,ostring,len)
- char mstring[];
- char *ostring;
- int len;
- {
- len +=1;
- Jhmsg->LineNum=0;
- strcpy(Jhmsg->String,mstring);
- Jhmsg->Data=len;
- Jhmsg->Command = JH_PM;
- PutToPort((struct Message *)Jhmsg);
- (void)WaitPort(replymp);
- (void)GetMsg(replymp);
- strcpy(ostring,Jhmsg->String);
- if(Jhmsg->Data==-1) CloseOut();
- }
- void showfile(mstring)
- char mstring[];
- {
- strcpy(Jhmsg->String,mstring);
- Jhmsg->Command = JH_SF;
- PutToPort((struct Message *)Jhmsg);
- (void)WaitPort(replymp);
- (void)GetMsg(replymp);
- }
- void showgfile(mstring)
- char mstring[];
- {
- strcpy(Jhmsg->String,mstring);
- Jhmsg->Command = JH_SG;
- PutToPort((struct Message *)Jhmsg);
- (void)WaitPort(replymp);
- (void)GetMsg(replymp);
- }
-
- void getuserdata(int which,int *odata)
- {
- long Dtimelimit,TimeUsed;
- switch(which)
- {
- case 6: *odata=1; break;
- case 7:
- Jhmsg->Command=DT_TIMELIMIT; Jhmsg->Data=READIT;
- PutToPort((struct Message *)Jhmsg);
- (void)WaitPort(replymp);
- (void)GetMsg(replymp);
- Dtimelimit=atol(Jhmsg->String);
- Jhmsg->Command=DT_TIMEUSED; Jhmsg->Data=READIT;
- PutToPort((struct Message *)Jhmsg);
- (void)WaitPort(replymp);
- (void)GetMsg(replymp);
- TimeUsed=atol(Jhmsg->String);
-
- *odata=(int)((Dtimelimit-TimeUsed)/60L);
- break;
- }
- }
- void getuserstring(char *ostring,int nl)
- {
- Jhmsg->Command = nl;
- Jhmsg->Data=READIT;
- PutToPort((struct Message *)Jhmsg);
- (void)WaitPort(replymp);
- (void)GetMsg(replymp);
- strcpy(ostring,Jhmsg->String);
- }
- void getcmduserstring(char *ostring,int nl)
- {
- strcpy(Jhmsg->String,ostring);
- Jhmsg->Command = nl;
- Jhmsg->Data=READIT;
- PutToPort((struct Message *)Jhmsg);
- (void)WaitPort(replymp);
- (void)GetMsg(replymp);
- strcpy(ostring,Jhmsg->String);
- }
- void putuserstring(char *ostring,int nl)
- {
- Jhmsg->Command = nl;
- Jhmsg->Data=WRITEIT;
- strcpy(Jhmsg->String,ostring);
- PutToPort((struct Message *)Jhmsg);
- (void)WaitPort(replymp);
- (void)GetMsg(replymp);
-
- }
-
- void Drop()
- {
- }
- void getmaxuserstring(char *ostring,int nl)
- {
- return;
- }
- struct MsgPort *CreatePrt(UBYTE *name,LONG pri)
- {
- int sigBit;
- struct MsgPort *mp;
-
- if((sigBit=AllocSignal(-1L))==-1)
- return(NULL);
- mp=(struct MsgPort *)
- AllocMem((ULONG)sizeof(struct MsgPort),(ULONG)MEMF_CLEAR|MEMF_PUBLIC);
- if(!mp)
- {
- FreeSignal(sigBit);
- return(NULL);
- }
- mp->mp_Node.ln_Name=name;
- mp->mp_Node.ln_Pri=pri;
- mp->mp_Node.ln_Type=NT_MSGPORT;
- mp->mp_Flags=PA_SIGNAL;
- mp->mp_SigBit=sigBit;
- mp->mp_SigTask=(struct Task *)FindTask(0L);
- if(name)
- AddPort(mp);
- else
- NewList(&(mp->mp_MsgList));
- return(mp);
- }
-
-
- void FlagFile(char *string)
- {
- strcpy(Jhmsg->String,string);
- Jhmsg->Command = JH_FLAGFILE;
- PutToPort((struct Message *)Jhmsg);
- (void)WaitPort(replymp);
- (void)GetMsg(replymp);
- }
- VOID CloseOut()
- {
- ShutDown();
- end();
- }